home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / FROMUTS / CDUNGEON / !CDUNGEON / c / DSO6 < prev    next >
Text File  |  1991-05-20  |  4KB  |  171 lines

  1. /* GHERE--    IS GLOBAL ACTUALLY IN THIS ROOM? */
  2.  
  3. /*COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142*/
  4. /* ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED */
  5. /* WRITTEN BY R. M. SUPNIK */
  6.  
  7. #include "funcs.h"
  8. #include "vars.h"
  9.  
  10. logical ghere_(obj, rm)
  11. integer obj;
  12. integer rm;
  13. {
  14.     /* System generated locals */
  15.     logical ret_val;
  16.  
  17.     ret_val = TRUE_;
  18. /*                         !ASSUME WINS. */
  19.     switch (obj - star_1.strbit) {
  20.     case 1:  goto L1000;
  21.     case 2:  goto L1000;
  22.     case 3:  goto L1000;
  23.     case 4:  goto L1000;
  24.     case 5:  goto L1000;
  25.     case 6:  goto L1000;
  26.     case 7:  goto L1000;
  27.     case 8:  goto L1000;
  28.     case 9:  goto L1000;
  29.     case 10:  goto L1000;
  30.     case 11:  goto L1000;
  31.     case 12:  goto L2000;
  32.     case 13:  goto L3000;
  33.     case 14:  goto L4000;
  34.     case 15:  goto L5000;
  35.     case 16:  goto L5000;
  36.     case 17:  goto L5000;
  37.     case 18:  goto L6000;
  38.     case 19:  goto L7000;
  39.     case 20:  goto L8000;
  40.     case 21:  goto L9000;
  41.     case 22:  goto L9100;
  42.     case 23:  goto L8000;
  43.     case 24:  goto L10000;
  44.     case 25:  goto L11000;
  45.     }
  46.     bug_(60, obj);
  47.  
  48. /* 1000--    STARS ARE ALWAYS HERE */
  49.  
  50. L1000:
  51.     return ret_val;
  52.  
  53. /* 2000--    BIRD */
  54.  
  55. L2000:
  56.     ret_val = rm >= rindex_1.fore1 && rm < rindex_1.clear || rm == 
  57.         rindex_1.mtree;
  58.     return ret_val;
  59.  
  60. /* 3000--    TREE */
  61.  
  62. L3000:
  63.     ret_val = rm >= rindex_1.fore1 && rm < rindex_1.clear && rm != 
  64.         rindex_1.fore3;
  65.     return ret_val;
  66.  
  67. /* 4000--    NORTH WALL */
  68.  
  69. L4000:
  70.     ret_val = rm >= rindex_1.bkvw && rm <= rindex_1.bkbox || rm == 
  71.         rindex_1.cpuzz;
  72.     return ret_val;
  73.  
  74. /* 5000--    EAST, SOUTH, WEST WALLS */
  75.  
  76. L5000:
  77.     ret_val = rm >= rindex_1.bkvw && rm < rindex_1.bkbox || rm == 
  78.         rindex_1.cpuzz;
  79.     return ret_val;
  80.  
  81. /* 6000--    GLOBAL WATER */
  82.  
  83. L6000:
  84.     ret_val = (rooms_1.rflag[rm - 1] & RWATER + RFILL) != 0;
  85.     return ret_val;
  86.  
  87. /* 7000--    GLOBAL GUARDIANS */
  88.  
  89. L7000:
  90.     ret_val = rm >= rindex_1.mrc && rm <= rindex_1.mrd || rm >= 
  91.         rindex_1.mrce && rm <= rindex_1.mrdw || rm == rindex_1.inmir;
  92.     return ret_val;
  93.  
  94. /* 8000--    ROSE/CHANNEL */
  95.  
  96. L8000:
  97.     ret_val = rm >= rindex_1.mra && rm <= rindex_1.mrd || rm == 
  98.         rindex_1.inmir;
  99.     return ret_val;
  100.  
  101. /* 9000--    MIRROR */
  102. /* 9100        PANEL */
  103.  
  104. L9100:
  105.     if (rm == rindex_1.fdoor) {
  106.     return ret_val;
  107.     }
  108. /*                         !PANEL AT FDOOR. */
  109. L9000:
  110.     ret_val = rm >= rindex_1.mra && rm <= rindex_1.mrc || rm >= 
  111.         rindex_1.mrae && rm <= rindex_1.mrcw;
  112.     return ret_val;
  113.  
  114. /* 10000--    MASTER */
  115.  
  116. L10000:
  117.     ret_val = rm == rindex_1.fdoor || rm == rindex_1.ncorr || rm == 
  118.         rindex_1.parap || rm == rindex_1.cell;
  119.     return ret_val;
  120.  
  121. /* 11000--    LADDER */
  122.  
  123. L11000:
  124.     ret_val = rm == rindex_1.cpuzz;
  125.     return ret_val;
  126.  
  127. } /* ghere_ */
  128.  
  129. /* MRHERE--    IS MIRROR HERE? */
  130.  
  131. /* DECLARATIONS */
  132.  
  133. integer mrhere_(rm)
  134. integer rm;
  135. {
  136.     /* System generated locals */
  137.     integer ret_val, i__1;
  138.  
  139.     if (rm < rindex_1.mrae || rm > rindex_1.mrdw) {
  140.     goto L100;
  141.     }
  142.  
  143. /* RM IS AN E-W ROOM, MIRROR MUST BE N-S (MDIR= 0 OR 180) */
  144.  
  145.     ret_val = 1;
  146. /*                         !ASSUME MIRROR 1 HERE. */
  147.     if ((rm - rindex_1.mrae) % 2 == findex_1.mdir / 180) {
  148.     ret_val = 2;
  149.     }
  150.     return ret_val;
  151.  
  152. /* RM IS NORTH OR SOUTH OF MIRROR.  IF MIRROR IS N-S OR NOT */
  153. /* WITHIN ONE ROOM OF RM, LOSE. */
  154.  
  155. L100:
  156.     ret_val = 0;
  157.     if ((i__1 = findex_1.mloc - rm, abs(i__1)) != 1 || findex_1.mdir % 180 ==
  158.          0) {
  159.     return ret_val;
  160.     }
  161.  
  162. /* RM IS WITHIN ONE OF MLOC, AND MDIR IS E-W */
  163.  
  164.     ret_val = 1;
  165.     if (rm < findex_1.mloc && findex_1.mdir < 180 || rm > findex_1.mloc && 
  166.         findex_1.mdir > 180) {
  167.     ret_val = 2;
  168.     }
  169.     return ret_val;
  170. } /* mrhere_ */
  171.